Method and system for translating between disparate data object models

ABSTRACT

A method and system is provided for using an active server page program in a universal web-based active server page framework. The active server page program has associated recordset objects within an active server page framework. The universal web-based active server page framework has associated dataset objects with data structure requirements which are incompatible with data structure requirements associated with the recordset objects. The method and system communicate recordset objects from the active server page program to a recordset-dataset translation mechanism. The dataset objects communicate between the universal web-based active server page program environment and the recordset-dataset translation mechanism. Translating dataset objects to corresponding recordset objects occurs within the recordset-dataset translation mechanism for transmitting data within the dataset objects to the active server page program of the active server page framework.

TECHNICAL FIELD OF INVENTION

The present invention relates to distributed component-based computersoftware applications, and more particularly relates to translatingbetween disparate data object models in an object oriented computingenvironment.

BACKGROUND OF THE INVENTION

In many information processing applications, a server application runson a host or server computer in a distributed network. The serverapplication provides processing services for client applications runningon terminal or workstation computers operated by a multitude of users onthe network. This is sometimes referred to as client/server computing.

In a form of client/server computing sometimes known as “distributedobjects,” the server application includes a set of components conformingto an object-oriented programming (OOP) model, such as the MicrosoftComponent Object Model (COM) and Distributed Component Object Model(DCOM), the IBM System Object Model (SOM), the Object ‘ManagementGroup’s Common Object Request Broker Architecture (CORBA), and others.Object-oriented programming generally has advantages in ease ofprogramming, extensibility, reuse of code, and integration of softwarefrom different vendors and (in some object-oriented programming models)across programming languages.

One type of OOP environment is that of Web-based services. Theseservices, due to their wide-spread use and technological progress, havedeveloped at least two generations of Web services technology. Thefirst-generation of Web services includes the use of open standards,universal access, rapid development, and continuous deployment. Thesecond-generation Web services environment uses execution environmentsand tools that take care of infrastructures and operations so developersmay focus on creating applications. These tools include the use of XMLfor universal representation, exchange and storage of all kinds of data,as well as for describing and manipulating component interfaces. Onetype of second-generation Web services environment for programming isoffered by Microsoft Corporation and is known as the “.NET environment.”The .NET environment aims to make component construction and reuse ofWeb services applications easier than they have been previously.

The benefits of using a Web services language such as .NET commonlanguage technology may be clear, but they are less immediate and lesscertain than many programmers desire. In fact, the .NET environmentsuffers from certain limitations. Moreover, because of theselimitations, programmers now using Active Server Pages (ASP), VisualBasic Script, Visual Basic and C++ skills are likely to findtransitioning to the .NET environment platform particularly challenging.For example, VB.NET, which is one example of a .NET environment VisualBasic language, departs dramatically from earlier Visual Basic versions.It approaches object orientation, components and exception handling morelike the newer C# language than does any previous Visual Basic language.

Still another limitation with the .NET environment has to do with thepresentation layers created within the .NET environment. Thesepresentation layers use the .NET ASP application, ASP.NET, and are verydifferent from the pages written in the classic ASP framework. Theclassic ASP framework provides for application development of userinterfaces or presentation layers. The ASP framework permits creatinginteractive pages as part of a Web-based application. To a degree, theASP framework enables developers to separate programming logic from pagedesign through the use of components that are called from the pageitself. The ASP framework allows developers to separate contentgeneration from layout by accessing components from the page, using acombination of tags and scripting to create dynamic Web pages.

The existing software to support the presentation layers created in theclassic ASP framework cannot effectively interface with the .NET dataaccess environment, ADO.NET. This is due to the ADO.NET environment'snot supporting ActiveX Data Objects Database RecordSets (also called“ADODB.RecordSets”). The ADODB.RecordSet makes possible communicationbetween a business tier and the data tier in database calls within theASP framework. Unfortunately, ADODB.RecordSets are not supported in theADO.NET environment, despite the fact that the classic ASP frameworkuses ADODB.RecordSets repeatedly for processing result sets fromdatabase calls. Many Internet applications have been developed usingMicrosoft ASP and Visual Basic version 6 (Visual Basic.6) componentsthat employ ADODB.RecordSets. In fact, Microsoft ASP and Visual Basic.6presently are somewhat ubiquitous languages for the Web servicesenvironment.

The newer .NET environment, which includes VB.NET (Visual Basic) andASP.NET (Active Server Pages), do not support ADO.NET andADODB.RecordSets equally. Instead of using ADODB.RecordSets, the ADO.NETframework uses an alternative structure, called the DataTable.Unfortunately, the DataTable does not directly interface withADODB.RecordSets, and use of data within ADODB.RecordSets requires theuse of a tool called “COM Interopt” to allow .NET components to accessan ADODB.RecordSet. This slows execution times with each interactionbetween the classic ASP framework page and VB.NET component due to theneed to call COM Interopt three times. A first call occurs so that theclassic ASP framework can call the VB.NET component. A second calloccurs to supply the ADODB.RecordSet to VB.NET. Still a third call loadsthe ADODB.RecordSet from an ADO.NET DataTable. The speed reductions thatthese calls impose on ASP applications may require many internetapplications written in the classic ASP framework to be re-written touse ASP.NET, VB.NET, and ADO.NET for them to operate properly. To makethis conversion, however, is so time-consuming and labor-intensive thatvery few applications can economically migrate to the .NET environment.

SUMMARY OF THE INVENTION

In accordance with the present invention, a method and system fortranslating between a classic ASP framework and a next-generation ASPframework is provided that avoids or substantially eliminates problemsand limitations associated with prior such methods and systems.

In one embodiment of the invention, there is provided a system thatleaves unchanged the front end classic ASP framework, while changing themiddle tier of business logic that communicates in the VB.NET language.The present invention achieves this result by use of a DataTable wrapperobject that appears to be a RecordSet to the classic ASP framework.

According to another aspect of the present invention, a method andsystem are provided for translating between a first data object modeland a second data object model, which data object models includeincompatible data structures. The process includes the steps ofreceiving a recordset call from the first data object model. Theprocess, in turn, translates the recordset call into a dataset call.Then, the process transmits the dataset call to the second data objectmodel.

According to still another aspect of the invention, a method and systemis provided for using an active server page program in a universalweb-based active server page framework. The active server page programhas associated recordset objects within an active server page framework.The universal web-based active server page framework has associateddataset objects with data structure requirements which are incompatiblewith data structure requirements associated with the recordset objects.The method and system communicate recordset objects from the activeserver page program to a recordset-dataset translation mechanism. Thedataset objects communicate between the universal web-based activeserver page program environment and the recordset-dataset translationmechanism. Translating dataset objects to corresponding recordsetobjects occurs within the recordset-dataset translation mechanism fortransmitting data within the dataset objects to the active server pageprogram of the active server page framework.

The present invention allows leaving an existing classic ASP frameworkInternet application unchanged while changing a backend business tierVB.NET component. Because the presentation layer has been written in ASPand the presentation layer writing represents the bulk of thedevelopment work for web applications, the present invention avoids theneed to readily convert an ASP application program to an ASP.NETapplication program. The present invention provides a device called aDataTableRecordSet through which the system calls a COM Interoptfunction only to communicate with VB.NET. Accordingly, execution timesusing the method of the present invention operate faster than when theoriginal classic ASP framework communicates with Visual Basic.6. Thepresent invention creates a DataTableRecordSet class of objects, whichmay be used in the classic ASP framework without any changes to the ASPscreens as the application interfaces with the .NET environmentframework.

The present invention avoids frequent and intensive use of the COMInterOpt function to limit the processing speed reduction associatedwith such use. By making the classic ASP framework presentation layerappear to be an ASP.NET application, the present invention provides away to reduce the scope of even the most complex migration from theclassic ASP framework to the ASP.NET platform.

Other technical advantages arising from the present invention willreadily apparent to those skilled in the art from a careful reading ofthe following figures, description, and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention andadvantages thereof, reference is now made to the following descriptiontaken in conjunction with the accompanying drawings in which likereference numbers indicate like features and wherein:

FIG. 1 is a block diagram of a computer system that may implement amethod and apparatus embodying the present invention;

FIG. 2 is a block diagram of an execution environment and runtimearchitecture for employing the illustrated embodiment of the invention;

FIG. 3 portrays the process of the present invention for dynamicallytranslating between disparate data object models;

FIG. 4 illustrates a first data object model with which the presentinvention interfaces;

FIG. 5 shows a second data object model with which the present inventioninterfaces; and

FIG. 6 depicts one aspect of the data object model translation system ofthe present invention.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENT

One embodiment of the present invention and its advantages are bestunderstood by referring to FIGS. 1 through 6 of the drawings, likenumerals being used for like and corresponding parts of the variousdrawings.

FIG. 1 and the following discussion are intended to provide a brief,general description of a suitable computing environment in which theinvention may be implemented. While the invention will be described inthe general context of computer-executable instructions of a computerprogram that runs on a computer, those skilled in the art will recognizethat the invention also may be implemented in combination with otherprogram modules. Generally, program modules include routines, programs,components, data structures, etc., that perform particular tasks orimplement particular abstract data types. Moreover, those skilled in theart will appreciate that the invention may be practiced with othercomputer system configurations, including hand-held devices,multiprocessor systems, microprocessor-based or programmable consumerelectronics, minicomputers, mainframe computers, and the like. Theillustrated embodiment of the invention also is practiced in distributedcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. But, someembodiments of the invention can be practiced on stand alone computers.In a distributed computing environment, program modules may be locatedin both local and remote memory storage devices.

With reference to FIG. 1, an exemplary system for implementing theinvention includes a conventional computer 10 (such as personalcomputers, laptops, palmtops, set tops, servers, mainframes, and othervariety computers), including a processing unit 12, system memory 14,and system bus 16 that couples various system components includingsystem memory 14 to the processing unit 12. Processing unit 12 may beany of various commercially available processors, including Intel x86,Pentium and compatible microprocessors from Intel and others, includingCyrix, AMD and Nexgen; Alpha from Digital; MIPS from MIPS Technology,NEC, IDT, Siemens, and others; and the PowerPC from IBM and Motorola.Dual microprocessors and other multi-processor architectures also can beused as the processing unit 12.

System bus 16 may be any of several types of bus structure including amemory bus or memory controller, a peripheral bus, and a local bus usingany of a variety of conventional bus architectures such as PCI, VESA,AGP, Microchannel, ISA and EISA, to name a few. System memory 14includes read only memory (ROM) 18 and random access memory (RAM) 20. Abasic input/output system (BIOS), containing the basic routines thathelp to transfer information between elements within the computer 10,such as during start-up, is stored in ROM 18.

Computer 10 further includes a hard disk drive 22, a floppy drive 24,e.g., to read from or write to a removable disk 26, and CD-ROM drive 28,e.g., for reading a CD-ROM disk 29 or to read from or write to otheroptical media. The hard disk drive 22, floppy drive 24, and CD-ROM drive28 are connected to the system bus 16 by a hard disk drive interface 30,a floppy drive interface 32, and an optical drive interface 34,respectively. The drives and their associated computer-readable mediaprovide nonvolatile storage of data, data structures,computer-executable instructions, etc. for computer 10. Although thedescription of computer-readable media provided above refers to a harddisk, a removable floppy and a CD, it should be appreciated by thoseskilled in the art that other types of media which are readable by acomputer, such as magnetic cassettes, flash memory cards, digital videodisks, Bernoulli cartridges, and the like, may also be used in theexemplary operating environment.

A number of program modules may be stored in the drives and RAM 20,including an operating system 36, one or more application programs 38,other program modules 40, and program data 42. A user may enter commandsand information into the computer 10 through a keyboard 44 and pointingdevice, such as a mouse 46. Other input devices (not shown) may includea microphone, joystick, game pad, satellite dish, scanner, or the like.These and other input devices are often connected to the processing unit12 through a serial port interface 48 that is coupled to the system bus,but may be connected by other interfaces, such as a parallel port, gameport or a universal serial bus (USB). A monitor 50 or other type ofdisplay device is also connected to the system bus 16 via an interface,such as a video adapter 52. In addition to the monitor, computerstypically include other peripheral output devices (not shown), such asspeakers and printers.

Computer 10 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer54. The remote computer 54 may be a server, a router, a peer device orother common network node, and typically includes many or all of theelements described relative to the computer 10, although only a memorystorage device 56 has been illustrated in FIG. 1. The logicalconnections depicted in FIG. 1 include a local area network (LAN) 58 anda wide area network (WAN) 60. Such networking environments arecommonplace in offices, enterprise-wide computer networks, intranets andthe Internet.

When used in a LAN networking environment, the computer 10 is connectedto the LAN 58 through a network interface or adapter 62. When used in aWAN networking environment, computer 10 typically includes a modem 64 orother means for establishing communications (e.g., via the LAN 58 and agateway or proxy server) over the wide area network 60, such as theInternet. Modem 64, which may be internal or external, is connected tothe system bus 16 via the serial port interface 48. In a networkedenvironment, program modules depicted relative to the computer 10, orportions thereof, may be stored in the remote memory storage device 56.It will be appreciated that the network connections shown are exemplaryand other means of establishing a communications link between thecomputers may be used.

FIG. 1 only provides one example of a computer that may be used with theinvention. The invention may be used in computers other thangeneral-purpose computers, as well as on general-purpose computerswithout conventional operating systems.

With reference now to FIG. 2, the COM+ component of the MicrosoftWindows 2000 operating system provides run-time or system services tocreate a run-time object execution environment 70 on a server computer72. The COM+ component is implemented as a dynamic link library (“DLL”),which is a well-known executable file format which allows dynamic orrun-time linking of executable code into an application program'sprocess. The COM+ DLL is loaded directly into application server process74 that hosts component application objects, and runs transparently inthe background of these processes.

The illustrated application server process 74 is a system process thathosts execution of component application objects. Each applicationserver process 74 can host multiple component application objects thatare grouped into the COM+ application. Also, multiple application serverprocesses 74 can execute on server computer 72 under a multi-threaded,multi-tasking operating system (e.g., Microsoft Windows 2000 in theillustrated embodiment).

In a typical installation shown in FIG. 2, execution environment 70 ison server computer 72 (which may be an example of computer 10, describedabove) that is connected in a distributed computer network 76 comprisinga large number of client computers 78 which access component applicationobjects in execution environment 70. Alternatively, executionenvironment 70 may reside on a single computer and host componentapplication objects accessed by client processes also resident on thatcomputer. Client computer 78, in accessing objects in executionenvironment 70, uses client program 82 within client process 84.

Server computer 72 executes component applications that are developed asa .NET Assembly containing a group of component application objects. Forexample, component application objects that are hosted in executionenvironment 70 of application server process 74 may implement thebusiness logic of a client/server application, such as the code tomanage class registrations in a university's registration application ororders in an on-line sales application. Typically, each componentapplication comprises multiple components, each of which containsprogram code for a portion of the application's work.

The component application objects in execution environment 70 conform tothe Microsoft Component Object Model (“COM”) specification (i.e., areimplemented as a “COM Object”) and are executed using the COM+ servicesof the Microsoft Windows 2000 Server operating system, but alternativelymay be implemented according to other object standards (including theCORBA (Common Object Request Broker Architecture) specification of theObject Management Group, and Java Beans by Sun Microsystems, Inc.) andexecuted under object services of another operating system. The COMspecification defines binary standards for objects and their interfaceswhich facilitate the integration of software components intoapplications. (For a detailed discussion of COM and OLE, see KraigBrockschmidt, Inside OLE, Second Edition, Microsoft Press, Redmond,Wash. (1995)).

Within execution environment 70, application server process 74 makes useof the ASP framework. These ASP components constitute middle or businessrule layer components of relevant portions of application server process74. This framework is responsible for encapsulating the majority of anapplication's transaction and database logic. For example, the logic fora complex calculation that requires access to several database tablesmay reside within a portion of the ASP framework that is part ofapplication server process 74. The portion of the ASP framework wouldthen be invoked by other portions of the ASP framework during executionof one or more of application server processes 74.

Within execution environment 70, the ASP framework executes ActiveXScripts and ActiveX Components on server computer 72. The ASP frameworkallows creation of interactive and personalized web pages for a Web siteor corporate intranet without program directly the internals of a Webserver or complex application programming interfaces. In addition, theASP framework is extensible via software components written usingMicrosoft's Component Object Model, thus making if possible to takeadvantage of software that may be already written using languages suchas Visual Basic, C++ or Java.

The ASP framework provides a series of DLLs installed on a Web server byeither a stand-alone installation program or as part of the VisualStudio 97 setup. These DLLs provide the ability to interpret and processinformation via the use of a script file (called an ASP script) that isresident in a Web application directory. The ASP framework permits a Webbrowser to request scripts containing ASP script, usually in the form ofVBSCRIPT or JSCRIPT. When requested, these scripts execute in the ASPframework, instead of being simply returned to the browser and produceoutput for sending back to the requesting browser. The ASP frameworkestablishes an environment having interactivity used to activate a Website.

The Visual Basic.6 component within the ASP framework includesapproximately fifteen (15) different classes or objects and includessimple business logic permitting requests from the presentation layer tointeract with databases written in ASP.NET. The Visual Basic.6 componentuses a RecordSet as the package within which to communicate with thepresentation layer and the business tier. The RecordSet alsocommunicates between the business tier and the data tier.

In the .NET environment, many of the functions of the ASP framework areperformed by the ASP.NET framework. The ASP.NET framework providescompiled common language runtime code running on the server computer 72(FIG. 2), for example. Unlike the classic ASP framework, the ASP.NETframework may take advantage of early binding, just-in-time compilation,native optimization, and caching services more readily than can the ASPframework. The ASP.NET framework defines an application as the sum ofall files, pages, handlers, modules, and executable code that can beinvoked or run in the scope of a given virtual directory (and itssubdirectories) on a Web application server. Each ASP.NET frameworkapplication on a Web server is executed within a unique .NET environmentapplication domain.

FIG. 3 shows process 90 for translating between the ASP framework 92 andthe ASP.NET framework 94 of the .NET environment. In FIG. 3, ASP 96 ofASP framework 92 makes a call to Business Logic Component 98 within theASP.NET framework 94. Business Logic Component 98 processes the callfrom ASP 96. In response, Business Logic Component 98 creates ADO.NETDataTable 100 and accesses Database 102 to retrieve data. Database 102sends the retrieved data to ADO.NET Data Table 100 in Business LogicComponent 98.

Instead of transmitting the retrieved ADO.NET DataTable 100 directly toASP 96 of ASP framework 92, business logic component 98 transmits theretrieved ADO.NET DataTable 100 to DataTableRecordSet object 104.DataTableRecordSet object 104 makes the retrieved ADO.NET DataTable 100appear to be a RecordSet. Then, DataTableRecordSet 104 is returned toASP 96 within ASP framework 92. Thus, ASP provides a presentation layerwithin classic ASP framework 92, which makes a call to a method withinbusiness logic component 98 that is written in VB.NET and makes a callto Database 102. VB.NET uses ADO.NET to send a query to the database toreceive back DataTable 100 in the .NET environment. DataTable 100 isreturned from Database 102 to business logic component 98. BusinessLogic Component 98 then transforms DataTable 100 into DataTableRecordSet104. DataTableRecordSet 104 is a class that has been created in VB.NET,a class which includes a number of methods which are each of thesignatures for the ADODB.RecordSet object. The DataTableRecordSet 104provides a wrapper around DataTable 100 for handing the wrapped objectback to classic ASP framework 92. So the wrapped DataTable 100 is withinDataTableRecordSet 104 which possesses the methods and properties thatare supported by the ADODB.RecordSet. Classic ASP framework 92 treatsthe DataTableRecordSet 104 object as an ADODB.RecordSet.

FIG. 4 shows the active data objects (ADO) object that operates withinASP framework 92 of FIG. 3. ADO object model 110 includes certainprimary objects. These primary objects include Connection object 112,which associates with the secondary Error objects 114 and Propertiesobjects 116. Command object 118 includes Parameters objects 120 andProperties objects 122. ADO object model 110 further includes RecordSetobject 124, which includes Fields objects 126 and Properties objects128. Furthermore, ADO object model 110 includes Record object 130 andStream object 132. Record object 132 may include Fields objects 134.

Four primary objects in ADO object model 110 establish the ADOprogramming environment. These objects include Connection object 112 forestablishing and managing connections to a database. RecordSet object124 manages a collection of records. RecordSet object 124 containsnavigational methods to move to a particular record. Fields object 126provides the collection of fields associated with a record in RecordSetobject 124. The values within the Field objects 126 change as differentnavigational methods are used to move around RecordSet object 124.Command object 118 is an object used to access stored procedures orparameterized SQL statements.

FIG. 5 shows ADO.NET object model 130 structure and its associatedprimary and secondary objects. Migration to the ASP.NET framework 94 forapplications originally created in the ASP framework 92 requires the useof a separate file name extension (.aspx instead of .asp), separateconfiguration settings, and an entirely separate common languageruntime. As was the case with ADO object model 110 of FIG. 4, ADO.NETobject model 130, includes as primary objects several that are similarto ADO objects, such as Connection object 132 and Command object 134,and also introduces new objects. Key new ADO.NET objects include theDataReader object 136, DataAdapter object 138 and DataSet object 140.

Each of the primary objects includes one or more secondary objects.Connection object, therefore, includes Errors objects 142 and Propertiesobjects 144. Command object 134 includes Parameters objects 146 andProperties objects 148. DataReader object 136 includes Stream object150.

DataAdapter object 138 includes a number of secondary Connection andCommand objects, including Connection object 152, SelectCommand object154, UpdateCommand object 156, InsertCommand object 158, DeleteCommandobject 160, and TableMappings objects 162.

DataSet object 140 of FIG. 5 includes Tables objects 164, which mayfurther include other Table objects 164, as well as Columns objects 166,Constraints objects 168, and Rows objects 170. In addition, DataSetobject 140 includes Relations objects 172.

Functions associated with these objects have not changed in the presentinvention from their original functions as provided in the ADO.NETframework as provided by Microsoft Corporation. However, their listinghere is for further explanation of the associated context of the presentinvention. Accordingly, published literature and operations manualsrelating to ADO and the ASP framework and ADO.NET and the ASP.NETframework are here expressly incorporated by reference.

DataSet object 140 is similar to the ADODB.RecordSet object 124, butwith the important distinction that the DataSet object 140 is alwaysdisconnected. DataSet object 140 represents a cache of data, withdatabase-like structures such as tables, columns, relationships, andconstraints. However, though DataSet object 140 can and does behave muchlike a database, it is important to remember that DataSet objects 140 donot interact directly with databases, or other source data. This allowsthe developer to work with a programming model that is alwaysconsistent, regardless of where the source data resides. Data comingfrom a database, an XML file, from code, or user input can all be placedinto DataSet objects 140. Then, as changes are made to DataSet object140 they can be tracked and verified before updating the source data.

With DataSet object 140, the origin of data is immaterial. DataSetobject 140 will always present a consistent programming model using acollection of data with relational database characteristics. WhileDataSet object 140 has no knowledge of the source of its data, themanaged provider has detailed and specific information. The role of themanaged provider is to connect, fill, and persist DataSet object 140 toand from data stores.

DataAdapter object 138 is the object that connects to the database tofill DataSet 140. Then, it connects back to the database to update thedata there, based on operations performed while the DataSet 140 held thedata. Whereas RecordSet object 124 is primarily connection-based, whenusing DataSet object 140, data processing is message-based and revolvesaround chunks of information. In this approach, the DataAdapter object138 provides a bridge to retrieve and save data between DataSet object140 and its source data store. It accomplishes this by means of requeststo the appropriate SQL commands made against the data store.

Referring briefly to FIG. 3, DataTableRecordSet object 104 of thepresent invention provides a wrapper to the .NET environment DataTable100 with properties and methods which behave like properties and methodsof an ADODB.RecordSet. These members are New, Dispose, Fields, EOF, BOF,AbsolutePosition, AbsolutePage, RecordCount, PageSize, PageCount,MoveNext, MovePrevious, MoveFirst, MoveLast, and Move. To the classicASP framework 92 pages, the .NET environment DataTableRecordSet object104 looks and behaves like an ADODB.RecordSet even though it actuallycontains an ADO.NET DataTable 100. As a result, the present inventionprovides an ASP framework 92 application the ability to be used muchmore readily, while allowing a slower migration to VB.NET language. Thiseliminates the need to completely rebuild an ASP application programwithin the .NET environment using the ASP.NET framework.

FIG. 6, therefore, illustrates how the use of DataTableRecordSet object104 makes useful to ASP framework 92 a DataTable 104 from the ASP.NETframework 94. DataTableRecordSet object 104 makes use methods to dooperations of an ADODB.RecordSet with data contained in an ADO.NETDataTable object. The DataTableRecordSet object 104 includes theproperties and methods of an ADODB.RecordSet object.

FIG. 6 depicts how DataTableRecordSet object 104 causes a DataTableobject 100 to appear to be an ADODB.RecordSet object 124 to a late-boundclient 174, such as an ASP. Note that DataTableRecordSet object 104contains DataTable object 100. DataTableRecordSet object 104 mapsindirectly to methods within DataTable 100.

FIG. 6 further shows the example of an ASP using the DataTableRecordSetobject 104. In this example, a MoveNext method of an ADODB.RecordSetobject 124 was used to advance to its next record and access informationtherein. This MoveNext method was written in the ASP framework 92 usinga RecordSet object 124, which ADO.NET does not support. However,DataTableRecordSet object 104 supplies a current record pointer valuefor the MoveNext method. This step allows the ASP to continue to accessinformation via the ADO.NET, without the ASP having to be modified. Thepresent invention, by supplying a current record pointer value for theassociated method, reduces the COM Interopt overhead to one call as anASP application program, as the ASP application interfaces with the .NETFramework Assembly.

Having described and illustrated the principles of our invention withreference to an illustrated embodiment, it will be recognized that theillustrated embodiment can be modified in arrangement and detail withoutdeparting from such principles. It should be understood that theprograms, processes, or methods described herein are not related orlimited to any particular type of computer apparatus, unless indicatedotherwise. Various types of general purpose or specialized computerapparatus may be used with or perform operations in accordance with theteachings described herein. Elements of the illustrated embodiment shownin software may be implemented in hardware and vice versa.

In view of the many possible embodiments to which the principles of ourinvention may be applied, it should be recognized that the detailedembodiments are illustrative only and should not be taken as limitingthe scope of our invention. Rather, we claim as our invention all suchembodiments as may come within the scope and spirit of the followingclaims and equivalents thereto.

1. A method for translating between a first data object model and asecond data object model, which data object models include incompatibledata structures, comprising: receiving a first recordset object call forobtaining a recordset object from the first data object model;translating the first recordset object call into a dataset object call,said dataset object call for obtaining a dataset object; transmittingthe dataset object call to the second data object model; and receivingsaid recordset object as a plurality of navigational methods fornavigating within a universal web-based active server page framework. 2.The method of claim 1, further comprising: obtaining a dataset object inresponse to said dataset object call; translating said dataset objectinto a second recordset object; and transmitting said second recordsetobject to said first data object model.
 3. The method of claim 1,further comprising translating the first recordset object call into thedataset object call within a business logic component associated withsaid universal web-based active server page framework.
 4. The method ofclaim 1, further comprising translating the first recordset object callinto the dataset object call for calling a plurality of table objectswithin said universal web-based active server page framework.
 5. Themethod of claim 1, wherein receiving the first recordset object call,translating the first recordset object call, transmitting the datasetobject call, and receiving said recordset object are performed by asystem having a processor.
 6. A system comprising: at least oneprocessor to: receive a first recordset object call for obtaining arecordset object from the first data object model; translate the firstrecordset object call into a dataset object call, said dataset objectcall for obtaining a dataset object; transmit the dataset object call tothe second data object model; and receive said recordset object as aplurality of navigational methods for navigating within a universalweb-based active server page framework.
 7. The system of claim 6,wherein the at least one processor is to further: obtain a datasetobject in response to said dataset object call; translate said datasetobject into a second recordset object; and transmit said secondrecordset object to said first data object model.
 8. The system of claim6, wherein the at least one processor is to further: translate the firstrecordset object call into the dataset object call within a businesslogic component associated with said universal web-based active serverpage framework.
 9. The system of claim 6, wherein the at least oneprocessor is to further: translate the first recordset object call intothe dataset object call for calling a plurality of table objects withinsaid universal web-based active server page framework.
 10. Anon-transitory computer-readable storage medium storing instructionsthat upon execution cause a computer system to: receive a firstrecordset object call for obtaining a recordset object from the firstdata object model; translate the first recordset object call into adataset object call, said dataset object call for obtaining a datasetobject; transmit the dataset object call to the second data objectmodel; and receive said recordset object as a plurality of navigationalmethods for navigating within a universal web-based active server pageframework.
 11. The non-transitory computer-readable storage medium ofclaim 10, wherein the instructions upon execution cause the computersystem to further: obtain a dataset object in response to said datasetobject call; translate said dataset object into a second recordsetobject; and transmit said second recordset object to said first dataobject model.
 12. The non-transitory computer-readable storage medium ofclaim 10, wherein the translating comprises translating the firstrecordset object call into the dataset object call within a businesslogic component associated with said universal web-based active serverpage framework.
 13. The non-transitory computer-readable storage mediumof claim 10, wherein the translating comprises translating the firstrecordset object call into the dataset object call for calling aplurality of table objects within said universal web-based active serverpage framework.